#include <stdio.h>
int *sp(int[]);
// 错误地使用临时数组名作为返回值的例子。

int main()
{
    int a[3] = {1, 3, 5}, i, *p;
    for (i = 0; i < 3; i++)
        printf("%d ", a[i]);
    printf("\n");
    p = sp(a);
    for (i = 0; i < 3; i++)
        printf("%d ", *(p + i));
    printf("\n");
    return 0;
}

int *sp(int s[])
{
    int b[3];
    b[0] = 2 + s[0];
    b[1] = 4 + s[1];
    b[2] = 6 - s[2] + b[1];
    return b;
}


/*
数组b是函数sp的临时数组，函数不能返回数组，
这里其实是返回数组首地址的指针。

虽然使用指针把存储b的首地址返给主函数，
但当函数调用结束后，数组也就不存在了，
所以返回的只是一个指向原来存储b的首地址。

数组b不存了，当然这个地址的内容也就不可预测了，
所以对这个地址的一系列操作，也就无从谈起了。

解决的办法是使用static定义数组b，使得返回的指针指向静态数组b。

由此可见，并不是使用指针就能保证返回正确的值。
被调用函数里定义的变量可以作为返回值，但须定义为static类型。


*/